package com.lu.project.model.dto.ai;

public enum AIModel {
    GPT_4O_MINI("gpt-4o-mini"),
    CLAUDE_HAIKU("claude-haiku"),
    LLAMA_3("llama-3"),
    GEMINI_1_5("gemini-1.5"),
    GEMINI_FLASH("gemini-flash"),
    COMMAND_R("command-r");

    private final String modelName;

    /**
     * 构造器
     *
     * @param modelName 模型的名称
     */
    AIModel(String modelName) {
        this.modelName = modelName;
    }

    /**
     * 获取模型的名称
     *
     * @return 模型名称
     */
    public String getModelName() {
        return modelName;
    }

    /**
     * 根据模型名称获取对应的枚举实例
     *
     * @param name 模型名称
     * @return 对应的AIModel枚举实例
     * @throws IllegalArgumentException 如果找不到对应的模型
     */
    public static AIModel fromString(String name) {
        for (AIModel model : AIModel.values()) {
            if (model.modelName.equalsIgnoreCase(name)) {
                return model;
            }
        }
        throw new IllegalArgumentException("未知的模型名称: " + name);
    }

    // 您可以根据需要为每个枚举实例添加更多属性和方法
    // 例如，模型的描述、支持的接口、价格等

    /**
     * 示例：获取模型的描述
     *
     * @return 模型的描述信息
     */
    public String getDescription() {
        switch (this) {
            case GPT_4O_MINI:
                return "GPT-4o-mini 是一个高效的AI模型，适用于多种自然语言处理任务。";
            case CLAUDE_HAIKU:
                return "Claude Haiku 是一个轻量级的AI模型，专注于快速响应和低资源消耗。";
            case LLAMA_3:
                return "Llama 3 是一个先进的AI模型，具有更高的准确性和更广的知识覆盖。";
            case GEMINI_1_5:
                return "Gemini 1.5 是一个多模态AI模型，支持文本、图像等多种输入输出。";
            case GEMINI_FLASH:
                return "Gemini Flash 是一个高性能的AI模型，适用于需要高吞吐量的应用场景。";
            case COMMAND_R:
                return "Command R 是一个专注于指令执行的AI模型，适合实现复杂任务自动化。";
            default:
                return "暂无描述。";
        }
    }
}
